﻿<?xml version="1.0" encoding="utf-8"?>

<!-- 
####################################################################################################################

BE AWARE THAT THE ORDER IN WHICH TYPES ARE DESCRIBED IN THE PROVIDER MANIFEST IS RELEVANT AND HAVE IMPACT IN LOOKUP
PROCESS

#################################################################################################################### 
-->
<ProviderManifest Namespace="SqlServer" xmlns="http://schemas.microsoft.com/ado/2006/04/edm/providermanifest">
    <Types>
        <Type Name="tinyint" PrimitiveTypeKind="Byte"></Type>
        <Type Name="smallint" PrimitiveTypeKind="Int16"></Type>
        <Type Name="int" PrimitiveTypeKind="Int32"></Type>
        <Type Name="bigint" PrimitiveTypeKind="Int64"></Type>
        <Type Name="float" PrimitiveTypeKind="Double"></Type>
        <Type Name="real" PrimitiveTypeKind="Single"></Type>
        <Type Name="decimal" PrimitiveTypeKind="Decimal">
            <FacetDescriptions>
                <Precision Minimum="1" Maximum="38" DefaultValue="18" Constant="false" />
                <Scale Minimum="0" Maximum="38" DefaultValue="0" Constant="false" />
            </FacetDescriptions>
        </Type>
        <Type Name="numeric" PrimitiveTypeKind="Decimal">
            <FacetDescriptions>
                <Precision Minimum="1" Maximum="38" DefaultValue="18" Constant="false" />
                <Scale Minimum="0" Maximum="38" DefaultValue="0" Constant="false" />
            </FacetDescriptions>
        </Type>
        <Type Name="smallmoney" PrimitiveTypeKind="Decimal">
            <FacetDescriptions>
                <Precision DefaultValue="10" Constant="true" />
                <Scale DefaultValue="4" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="money" PrimitiveTypeKind="Decimal">
            <FacetDescriptions>
                <Precision DefaultValue="19" Constant="true" />
                <Scale DefaultValue="4" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="binary" PrimitiveTypeKind="Binary">
            <FacetDescriptions>
                <MaxLength Minimum="1" Maximum="8000" DefaultValue="8000" Constant="false" />
                <FixedLength DefaultValue="true" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="varbinary" PrimitiveTypeKind="Binary">
            <FacetDescriptions>
                <MaxLength Minimum="1" Maximum="8000" DefaultValue="8000" Constant="false" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="varbinary(max)" PrimitiveTypeKind="Binary">
            <FacetDescriptions>
                <MaxLength DefaultValue="2147483647" Constant="true" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="image" PrimitiveTypeKind="Binary">
            <FacetDescriptions>
                <MaxLength DefaultValue="2147483647" Constant="true" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="timestamp" PrimitiveTypeKind="Binary">
            <FacetDescriptions>
                <MaxLength DefaultValue="8" Constant="true" />
                <FixedLength DefaultValue="true" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="rowversion" PrimitiveTypeKind="Binary">
            <FacetDescriptions>
                <MaxLength DefaultValue="8" Constant="true" />
                <FixedLength DefaultValue="true" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="bit" PrimitiveTypeKind="Boolean"></Type>
        <Type Name="smalldatetime" PrimitiveTypeKind="DateTime">
            <FacetDescriptions>
                <Precision DefaultValue="0" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="datetime" PrimitiveTypeKind="DateTime">
            <FacetDescriptions>
                <Precision DefaultValue="3" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="datetime2" PrimitiveTypeKind="DateTime">
            <FacetDescriptions>
                <Precision Minimum="0" Maximum="7" DefaultValue="7" Constant="false" />
            </FacetDescriptions>
        </Type>
        <Type Name="date" PrimitiveTypeKind="DateTime">
            <FacetDescriptions>
                <Precision DefaultValue="0" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="time" PrimitiveTypeKind="Time">
            <FacetDescriptions>
                <Precision Minimum="0" Maximum="7" DefaultValue="7" Constant="false" />
            </FacetDescriptions>
        </Type>
        <Type Name="datetimeoffset" PrimitiveTypeKind="DateTimeOffset">
            <FacetDescriptions>
                <Precision Minimum="0" Maximum="7" DefaultValue="7" Constant="false" />
            </FacetDescriptions>
        </Type>
        <Type Name="nvarchar" PrimitiveTypeKind="String">
            <FacetDescriptions>
                <MaxLength Minimum="1" Maximum="4000" DefaultValue="4000" Constant="false" />
                <Unicode DefaultValue="true" Constant="true" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="varchar" PrimitiveTypeKind="String">
            <FacetDescriptions>
                <MaxLength Minimum="1" Maximum="8000" DefaultValue="8000" Constant="false" />
                <Unicode DefaultValue="false" Constant="true" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="char" PrimitiveTypeKind="String">
            <FacetDescriptions>
                <MaxLength Minimum="1" Maximum="8000" DefaultValue="8000" Constant="false" />
                <Unicode DefaultValue="false" Constant="true" />
                <FixedLength DefaultValue="true" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="nchar" PrimitiveTypeKind="String">
            <FacetDescriptions>
                <MaxLength Minimum="1" Maximum="4000" DefaultValue="4000" Constant="false" />
                <Unicode DefaultValue="true" Constant="true" />
                <FixedLength DefaultValue="true" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="varchar(max)" PrimitiveTypeKind="String">
            <FacetDescriptions>
                <MaxLength DefaultValue="2147483647" Constant="true" />
                <Unicode DefaultValue="false" Constant="true" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="nvarchar(max)" PrimitiveTypeKind="String">
            <FacetDescriptions>
                <MaxLength DefaultValue="1073741823" Constant="true" />
                <Unicode DefaultValue="true" Constant="true" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="ntext" PrimitiveTypeKind="String">
            <FacetDescriptions>
                <MaxLength DefaultValue="1073741823" Constant="true" />
                <Unicode DefaultValue="true" Constant="true" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="text" PrimitiveTypeKind="String">
            <FacetDescriptions>
                <MaxLength DefaultValue="2147483647" Constant="true" />
                <Unicode DefaultValue="false" Constant="true" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="uniqueidentifier" PrimitiveTypeKind="Guid"></Type>
        <Type Name="xml" PrimitiveTypeKind="String">
            <FacetDescriptions>
                <MaxLength DefaultValue="1073741823" Constant="true" />
                <Unicode DefaultValue="true" Constant="true" />
                <FixedLength DefaultValue="false" Constant="true" />
            </FacetDescriptions>
        </Type>
        <Type Name="geography" PrimitiveTypeKind="Geography">
            <FacetDescriptions>
                <SRID Minimum="0" Maximum="9999" DefaultValue="Variable" Constant="false" />
                <IsStrict DefaultValue="true" Constant="false" />
            </FacetDescriptions>
        </Type>
        <Type Name="geometry" PrimitiveTypeKind="Geometry">
            <FacetDescriptions>
                <SRID Minimum="0" Maximum="9999" DefaultValue="Variable" Constant="false" />
                <IsStrict DefaultValue="true" Constant="false" />
            </FacetDescriptions>
        </Type>
    </Types>
    <Functions>

        <!-- BEGIN AGGREGATES ############################################# -->
        <!-- AVG -->
        <Function Name="AVG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Int32)" Mode="In" />
        </Function>
        <Function Name="AVG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Int64)" Mode="In" />
        </Function>
        <Function Name="AVG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>
        <Function Name="AVG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>

        <!-- CHECKSUM_AGG -->
        <Function Name="CHECKSUM_AGG" Aggregate="true" BuiltIn="true" ParameterTypeSemantics="ExactMatchOnly">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Int32)" Mode="In" />
        </Function>

        <!-- COUNT -->
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Boolean)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(DateTime)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(DateTimeOffset)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Time)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Guid)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(String)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Binary)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Int64)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Int32)" Mode="In" />
        </Function>
        <Function Name="COUNT" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Int16)" Mode="In" />
        </Function>

        <!-- COUNT_BIG -->
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Boolean)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(DateTime)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(DateTimeOffset)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Time)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Guid)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(String)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Binary)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Int64)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Int32)" Mode="In" />
        </Function>
        <Function Name="COUNT_BIG" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Int16)" Mode="In" />
        </Function>

        <!-- GROUPING !NOT SUPPORTED! -->

        <!-- MAX -->
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Byte" />
            <Parameter Name="arg" Type="Collection(Byte)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int16" />
            <Parameter Name="arg" Type="Collection(Int16)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Int32)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Int64)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Single" />
            <Parameter Name="arg" Type="Collection(Single)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="DateTime" />
            <Parameter Name="arg" Type="Collection(DateTime)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Time" />
            <Parameter Name="arg" Type="Collection(Time)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="DateTimeOffset" />
            <Parameter Name="arg" Type="Collection(DateTimeOffset)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="arg" Type="Collection(String)" Mode="In" />
        </Function>
        <Function Name="MAX" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Binary" />
            <Parameter Name="arg" Type="Collection(Binary)" Mode="In" />
        </Function>

        <!-- MIN -->
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Byte" />
            <Parameter Name="arg" Type="Collection(Byte)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int16" />
            <Parameter Name="arg" Type="Collection(Int16)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Int32)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Int64)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Single" />
            <Parameter Name="arg" Type="Collection(Single)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="DateTime" />
            <Parameter Name="arg" Type="Collection(DateTime)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Time" />
            <Parameter Name="arg" Type="Collection(Time)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="DateTimeOffset" />
            <Parameter Name="arg" Type="Collection(DateTimeOffset)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="arg" Type="Collection(String)" Mode="In" />
        </Function>
        <Function Name="MIN" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Binary" />
            <Parameter Name="arg" Type="Collection(Binary)" Mode="In" />
        </Function>

        <!-- SUM -->
        <Function Name="SUM" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Collection(Int32)" Mode="In" />
        </Function>
        <Function Name="SUM" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Collection(Int64)" Mode="In" />
        </Function>
        <Function Name="SUM" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>
        <Function Name="SUM" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>

        <!-- STDEV -->
        <Function Name="STDEV" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>

        <Function Name="STDEV" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>


        <!-- STDEVP -->
        <Function Name="STDEVP" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>

        <Function Name="STDEVP" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>

        <!-- VAR -->
        <Function Name="VAR" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>

        <Function Name="VAR" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>

        <!-- VARP -->
        <Function Name="VARP" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Double)" Mode="In" />
        </Function>

        <Function Name="VARP" Aggregate="true" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Collection(Decimal)" Mode="In" />
        </Function>


        <!-- END AGGREGATES ############################################# -->

        <!-- BEGIN STRING FUNCTIONS ##################################### -->
        <!-- ASCII( arg ) 
                arg1: char, varchar (nvarchar is allowed by SQL server)
                returns: int   
        -->
        <Function Name="ASCII" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="String" Mode="In" />
        </Function>

        <!-- CHAR( arg )
                arg: tinyint, *smallint, *int, *bigint
                returns: char(1)
        -->
        <Function Name="CHAR" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="arg" Type="Int32" Mode="In" />
        </Function>

        <!-- CHARINDEX( strSearch, strTarget [, startLocation ] )
                strSearch: character expression
                strTarget: character expression
                startLocation: tinyint, smallint, int, bigint
                returns: int, bigint   
        -->
        <Function Name="CHARINDEX" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="strSearch" Type="String" Mode="In" />
            <Parameter Name="strTarget" Type="String" Mode="In" />
        </Function>
        <Function Name="CHARINDEX" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="strSearch" Type="Binary" Mode="In" />
            <Parameter Name="strTarget" Type="Binary" Mode="In" />
        </Function>
        <Function Name="CHARINDEX" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="strSearch" Type="String" Mode="In" />
            <Parameter Name="strTarget" Type="String" Mode="In" />
            <Parameter Name="startLocation" Type="Int32" Mode="In" />
        </Function>
        <Function Name="CHARINDEX" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="strSearch" Type="Binary" Mode="In" />
            <Parameter Name="strTarget" Type="Binary" Mode="In" />
            <Parameter Name="startLocation" Type="Int32" Mode="In" />
        </Function>
        <Function Name="CHARINDEX" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="strSearch" Type="String" Mode="In" />
            <Parameter Name="strTarget" Type="String" Mode="In" />
            <Parameter Name="startLocation" Type="Int64" Mode="In" />
        </Function>
        <Function Name="CHARINDEX" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="strSearch" Type="Binary" Mode="In" />
            <Parameter Name="strTarget" Type="Binary" Mode="In" />
            <Parameter Name="startLocation" Type="Int64" Mode="In" />
        </Function>

        <!-- DIFFERENCE( str1, str2 ) 
            str1: varchar
            str2: varchar
            returns: int   
        -->
        <Function Name="DIFFERENCE" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="str1" Type="String" Mode="In" />
            <Parameter Name="str2" Type="String" Mode="In" />
        </Function>
        <!-- LEFT( str, count ) 
                str: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
                count: tinyint, smallint, int, bigint
                returns: varchar, nvarchar
        -->
        <Function Name="LEFT" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="str" Type="String" Mode="In" />
            <Parameter Name="count" Type="Int64" Mode="In" />
        </Function>

        <!-- LEN( string_expression )
                string_expression: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
                returns: int, bigint   
        -->
        <Function Name="LEN" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="string_expression" Type="String" Mode="In" />
        </Function>
        <Function Name="LEN" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="string_expression" Type="Binary" Mode="In" />
        </Function>

        <!-- LOWER( str ) 
            str: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
            returns: varchar, nvarchar   
        -->
        <Function Name="LOWER" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="str" Type="String" Mode="In" />
        </Function>


        <!-- LTRIM( str ) 
            str: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
            returns: varchar, nvarchar
        -->
        <Function Name="LTRIM" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="str" Type="String" Mode="In" />
        </Function>

        <!-- nchar( ncharCode ) 
                ncharCode: tinyint, smallint, int, bigint
                returns: nchar(1)
        -->
        <Function Name="NCHAR" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="arg" Type="Int32" Mode="In" />
        </Function>

        <!-- PATINDEX( strPattern, strTarget )
            strPattern: char, nchar, varchar, nvarchar
            strTarget: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
            returns: int, bigint   
        -->
        <Function Name="PATINDEX" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="strPattern" Type="String" Mode="In" />
            <Parameter Name="strTarget" Type="String" Mode="In" />
        </Function>

        <!-- QUOTENAME( character_string [,quote_character] ) 
                character_string: nchar, nvarchar, nvarchar(max)
                quote_character: nchar, char, varchar, nvarchar
                returns: nvarchar   
        -->
        <Function Name="QUOTENAME" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="character_string" Type="String" Mode="In" />
        </Function>
        <Function Name="QUOTENAME" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="character_string" Type="String" Mode="In" />
            <Parameter Name="quote_character" Type="String" Mode="In" />
        </Function>

        <!-- REPLACE( strTarget, strSearch, strReplacement )
            strTarget: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
            strSearch: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
            strReplacement: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
            returns: varchar, nvarchar   
        -->
        <Function Name="REPLACE" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="strTarget" Type="String" Mode="In" />
            <Parameter Name="strSearch" Type="String" Mode="In" />
            <Parameter Name="strReplacement" Type="String" Mode="In" />
        </Function>

        <!-- REPLICATE( strSource, count )
            strSource: varchar, nvarchar
            count: tinyint, smallint, int
            returns: varchar, nvarchar   
        -->
        <Function Name="REPLICATE" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="strTarget" Type="String" Mode="In" />
            <Parameter Name="count" Type="Int32" Mode="In" />
        </Function>

        <!-- REVERSE( arg ) 
            arg: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
            returns: varchar, nvarchar
        -->
        <Function Name="REVERSE" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="arg" Type="String" Mode="In" />
        </Function>

        <!-- RIGHT( atr, count ) 
                str: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
                count: tinyint, smallint, int, bigint
                returns: varchar, nvarchar
        -->
        <Function Name="RIGHT" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="str" Type="String" Mode="In" />
            <Parameter Name="count" Type="Int64" Mode="In" />
        </Function>

        <!-- RTRIM( arg1 ) 
            str: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
            returns: varchar, nvarchar
        -->
        <Function Name="RTRIM" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="str" Type="String" Mode="In" />
        </Function>

        <!-- SOUNDEX( arg ) 
            arg: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
            returns: varchar   
        -->
        <Function Name="SOUNDEX" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="arg" Type="String" Mode="In" />
        </Function>

        <!-- SPACE( arg ) 
            arg: tinyint, smallint, int
            returns: char   
        -->
        <Function Name="SPACE" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="arg1" Type="Int32" Mode="In" />
        </Function>

        <!-- STR( number [,length [,decimal]] ) 
                number: float
                length: int
                decimal: int
                returns: char   
        -->
        <Function Name="STR" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="number" Type="Double" Mode="In" />
        </Function>
        <Function Name="STR" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="number" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="STR" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="number" Type="Double" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
        </Function>
        <Function Name="STR" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="number" Type="Decimal" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
        </Function>
        <Function Name="STR" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="number" Type="Double" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
            <Parameter Name="decimal" Type="Int32" Mode="In" />
        </Function>
        <Function Name="STR" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="number" Type="Decimal" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
            <Parameter Name="decimal" Type="Int32" Mode="In" />
        </Function>

        <!-- STUFF( strInput, start, length, strReplacement )
                strInput: varchar, nvarchar
                start: int
                legth: int
                strReplacement: varchar, nvarchar
                returns: int, bigint   
        -->
        <Function Name="STUFF" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="strInput" Type="String" Mode="In" />
            <Parameter Name="start" Type="Int32" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
            <Parameter Name="strReplacement" Type="String" Mode="In" />
        </Function>

        <!-- SUBSTRING( str, start, length )
                str: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
                start: tinyint, smallint, int, bigint
                length: tinyint, smallint, int, bigint
                returns: varchar, nvarchar
        -->
        <Function Name="SUBSTRING" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="str" Type="String" Mode="In" />
            <Parameter Name="start" Type="Int64" Mode="In" />
            <Parameter Name="length" Type="Int64" Mode="In" />
        </Function>
        <Function Name="SUBSTRING" BuiltIn="true">
            <ReturnType Type="Binary" />
            <Parameter Name="str" Type="Binary" Mode="In" />
            <Parameter Name="start" Type="Int64" Mode="In" />
            <Parameter Name="length" Type="Int64" Mode="In" />
        </Function>

        <!-- UNICODE( arg ) 
            arg: nchar, nvarchar
            returns: int   
        -->
        <Function Name="UNICODE" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="String" Mode="In" />
        </Function>

        <!-- UPPER( arg ) 
                str: char, nchar, varchar, nvarchar, varchar(max), nvarchar(max)
                returns: varchar, nvarchar   
        -->
        <Function Name="UPPER" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="str" Type="String" Mode="In" />
        </Function>

        <!-- END STRING FUNCTIONS ####################################### -->

        <!-- BEGIN MATH FUNCTIONS ####################################### -->
        <!-- ABS( arg )
                arg: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
                returns: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
        -->
        <Function Name="ABS" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Int32" Mode="In" />
        </Function>
        <Function Name="ABS" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Int64" Mode="In" />
        </Function>
        <Function Name="ABS" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="ABS" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>

        <!-- ACOS( arg )
                arg: float
                returns: float   
        -->
        <Function Name="ACOS" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg1" Type="Double" Mode="In" />
        </Function>
        <Function Name="ACOS" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg1" Type="Decimal" Mode="In" />
        </Function>

        <!-- ASIN( arg )
                arg: float
                returns: float   
        -->
        <Function Name="ASIN" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>
        <Function Name="ASIN" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>

        <!-- ATAN( arg )
                arg: float
                returns: float   
        -->
        <Function Name="ATAN" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>

        <Function Name="ATAN" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>

        <!-- ATN2( arg1, arg2 )
                arg1: float
                arg2: float
                returns: float   
        -->
        <Function Name="ATN2" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg1" Type="Double" Mode="In" />
            <Parameter Name="arg2" Type="Double" Mode="In" />
        </Function>

        <Function Name="ATN2" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg1" Type="Decimal" Mode="In" />
            <Parameter Name="arg2" Type="Decimal" Mode="In" />
        </Function>


        <!-- CEILING( arg )
                arg: smalldatetime, datetime
                returns: int   
        -->
        <Function Name="CEILING" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Int32" Mode="In" />
        </Function>
        <Function Name="CEILING" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Int64" Mode="In" />
        </Function>
        <Function Name="CEILING" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="CEILING" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>

        <!-- COS( arg )
                arg: float
                returns: float   
        -->
        <Function Name="COS" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>

        <Function Name="COS" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>

        <!-- COT( arg )
                arg: float
                returns: float   
        -->
        <Function Name="COT" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>
        <Function Name="COT" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>

        <!-- DEGREES( arg )
                arg: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
                returns: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
        -->
        <Function Name="DEGREES" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Int32" Mode="In" />
        </Function>
        <Function Name="DEGREES" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg1" Type="Int64" Mode="In" />
        </Function>
        <Function Name="DEGREES" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg1" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="DEGREES" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg1" Type="Double" Mode="In" />
        </Function>
        <!-- EXP( arg )
                arg: float
                returns: float   
        -->
        <Function Name="EXP" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>

        <Function Name="EXP" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>

        <!-- FLOOR( arg )
                arg: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
                returns: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
        -->
        <Function Name="FLOOR" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Int32" Mode="In" />
        </Function>
        <Function Name="FLOOR" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Int64" Mode="In" />
        </Function>
        <Function Name="FLOOR" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="FLOOR" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>

        <!-- LOG( arg )
            arg: float
            returns: float   
     -->
        <Function Name="LOG" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>
        <Function Name="LOG" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>

        <!-- LOG10( arg )
                arg: float
                returns: float   
        -->
        <Function Name="LOG10" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>
        <Function Name="LOG10" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>
        <!-- PI( )
                returns: float   
        -->
        <Function Name="PI" BuiltIn="true">
            <ReturnType Type="Double" />
        </Function>

        <!-- POWER( x, y )
                x: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
                y: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
                returns: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
        -->
        <Function Name="POWER" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="x" Type="Int32" Mode="In" />
            <Parameter Name="y" Type="Double" Mode="In" />
        </Function>
        <Function Name="POWER" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="x" Type="Int64" Mode="In" />
            <Parameter Name="y" Type="Double" Mode="In" />
        </Function>
        <Function Name="POWER" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="x" Type="Decimal" Mode="In" />
            <Parameter Name="y" Type="Double" Mode="In" />
        </Function>
        <Function Name="POWER" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="x" Type="Double" Mode="In" />
            <Parameter Name="y" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="POWER" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="x" Type="Decimal" Mode="In" />
            <Parameter Name="y" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="POWER" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="x" Type="Double" Mode="In" />
            <Parameter Name="y" Type="Double" Mode="In" />
        </Function>
        <Function Name="POWER" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="x" Type="Int64" Mode="In" />
            <Parameter Name="y" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="POWER" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="x" Type="Int32" Mode="In" />
            <Parameter Name="y" Type="Decimal" Mode="In" />
        </Function>
        <!-- RADIANS( arg )
                arg: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
                returns: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
        -->
        <Function Name="RADIANS" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Int32" Mode="In" />
        </Function>
        <Function Name="RADIANS" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Int64" Mode="In" />
        </Function>
        <Function Name="RADIANS" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="RADIANS" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>

        <!-- RAND( [seed] )
                seed: tinyint, smallint, int
                returns: float
        -->
        <Function Name="RAND" BuiltIn="true">
            <ReturnType Type="Double" />
        </Function>
        <Function Name="RAND" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="seed" Type="Int32" Mode="In" />
        </Function>

        <!-- ROUND( numeric_expression, length [ ,function ] )
                numeric_expression: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
                length: tinyint, smallint, int
                function: tinyint, smallint, int
                returns: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
        -->
        <Function Name="ROUND" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="numeric_expression" Type="Int32" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
        </Function>
        <Function Name="ROUND" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="numeric_expression" Type="Int64" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
        </Function>
        <Function Name="ROUND" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="numeric_expression" Type="Decimal" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
        </Function>
        <Function Name="ROUND" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="numeric_expression" Type="Double" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
        </Function>
        <Function Name="ROUND" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="numeric_expression" Type="Int32" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
            <Parameter Name="function" Type="Int32" Mode="In" />
        </Function>
        <Function Name="ROUND" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="numeric_expression" Type="Int64" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
            <Parameter Name="function" Type="Int32" Mode="In" />
        </Function>
        <Function Name="ROUND" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="numeric_expression" Type="Decimal" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
            <Parameter Name="function" Type="Int32" Mode="In" />
        </Function>
        <Function Name="ROUND" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="numeric_expression" Type="Double" Mode="In" />
            <Parameter Name="length" Type="Int32" Mode="In" />
            <Parameter Name="function" Type="Int32" Mode="In" />
        </Function>

        <!-- SIGN( arg )
            arg: tinyint, smallint, int, bigint, numeric, decimal, smallmoney, money, real, float
            returns: bigint, numeric, decimal, money, float
        -->
        <Function Name="SIGN" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Int32" Mode="In" />
        </Function>
        <Function Name="SIGN" BuiltIn="true">
            <ReturnType Type="Int64" />
            <Parameter Name="arg" Type="Int64" Mode="In" />
        </Function>
        <Function Name="SIGN" BuiltIn="true">
            <ReturnType Type="Decimal" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="SIGN" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>

        <!-- SIN( arg )
                arg: float
                returns: float   
        -->
        <Function Name="SIN" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="SIN" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>

        <!-- SQRT( arg )
                arg: float
                returns: float   
        -->
        <Function Name="SQRT" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>
        <Function Name="SQRT" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>

        <!-- SQUARE( arg )
                arg: smalldatetime, datetime
                returns: int   
        -->
        <Function Name="SQUARE" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg1" Type="Double" Mode="In" />
        </Function>
        <Function Name="SQUARE" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg1" Type="Decimal" Mode="In" />
        </Function>
        <!-- TAN( arg )
                arg: float
                returns: float   
        -->
        <Function Name="TAN" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>
        <Function Name="TAN" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>

        <!-- END MATH FUNCTIONS ######################################### -->


        <!-- BEGIN DATE FUNCTIONS ####################################### -->
        <!-- DATEADD 
                datepart: nvarchar
                number: tinyint, smallint, int, bigint, numeric, decimal, real, float
                date: smalldatetime, datetime, varchar, nvarchar, char, nchar
                returns: SMALLTIME, datetime   
        -->
        <Function Name="DATEADD" BuiltIn="true">
            <ReturnType Type="DateTime" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="number" Type="Double" Mode="In" />
            <Parameter Name="date" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="DATEADD" BuiltIn="true">
            <ReturnType Type="Time" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="number" Type="Double" Mode="In" />
            <Parameter Name="time" Type="Time" Mode="In" />
        </Function>
        <Function Name="DATEADD" BuiltIn="true">
            <ReturnType Type="DateTimeOffset" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="number" Type="Double" Mode="In" />
            <Parameter Name="datetimeoffset" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="DATEADD" BuiltIn="true">
            <ReturnType Type="DateTime" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="number" Type="Double" Mode="In" />
            <Parameter Name="date" Type="String" Mode="In" />
        </Function>

        <!-- DATEDIFF( datepart, startdate, enddate )
                datepart: nvarchar
                startdate: smalldatetime, datetime, char, nchar, varchar, nvarchar
                enddate: smalldatetime, datetime, char, nchar, varchar, nvarchar
                returns: int   
        -->
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="DateTime" Mode="In" />
            <Parameter Name="enddate" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="DateTimeOffset" Mode="In" />
            <Parameter Name="enddate" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="Time" Mode="In" />
            <Parameter Name="enddate" Type="Time" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="String" Mode="In" />
            <Parameter Name="enddate" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="String" Mode="In" />
            <Parameter Name="enddate" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="String" Mode="In" />
            <Parameter Name="enddate" Type="Time" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="Time" Mode="In" />
            <Parameter Name="enddate" Type="String" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="DateTime" Mode="In" />
            <Parameter Name="enddate" Type="String" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="DateTimeOffset" Mode="In" />
            <Parameter Name="enddate" Type="String" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="String" Mode="In" />
            <Parameter Name="enddate" Type="String" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="Time" Mode="In" />
            <Parameter Name="enddate" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="Time" Mode="In" />
            <Parameter Name="enddate" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="DateTime" Mode="In" />
            <Parameter Name="enddate" Type="Time" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="DateTimeOffset" Mode="In" />
            <Parameter Name="enddate" Type="Time" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="DateTime" Mode="In" />
            <Parameter Name="enddate" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="DATEDIFF" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="startdate" Type="DateTimeOffset" Mode="In" />
            <Parameter Name="enddate" Type="DateTime" Mode="In" />
        </Function>


        <!-- DATENAME( datepart, date )
            datepart: nvarchar
            date: smalldatetime, datetime, char, nchar, varchar, nvarchar
            returns: nvarchar   
        -->
        <Function Name="DATENAME" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="date" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="DATENAME" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="date" Type="String" Mode="In" />
        </Function>
        <Function Name="DATENAME" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="date" Type="Time" Mode="In" />
        </Function>
        <Function Name="DATENAME" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="date" Type="DateTimeOffset" Mode="In" />
        </Function>
        <!-- DATEPART( datepart, date )
                datepart: nvarchar
                date: smalldatetime, datetime, char, nchar, varchar, nvarchar
                returns: int   
        -->
        <Function Name="DATEPART" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="date" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="DATEPART" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="date" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="DATEPART" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="date" Type="String" Mode="In" />
        </Function>
        <Function Name="DATEPART" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="datepart" Type="String" Mode="In" />
            <Parameter Name="date" Type="Time" Mode="In" />
        </Function>
        <!-- DAY( date )
            date: smalldatetime, datetime
            returns: int   
        -->
        <Function Name="DAY" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="date" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="DAY" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="date" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="DAY" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="date" Type="String" Mode="In" />
        </Function>
        <!-- GETDATE()
            returns: datetime   
        -->
        <Function Name="GETDATE" BuiltIn="true">
            <ReturnType Type="DateTime" />
        </Function>

        <!-- SYSDATETIME()
            returns: datetime   
      -->
        <Function Name="SYSDATETIME" BuiltIn="true">
            <ReturnType Type="DateTime" />
        </Function>

        <!-- SYSUTCDATETIME()
          returns: datetime   
    -->
        <Function Name="SYSUTCDATETIME" BuiltIn="true">
            <ReturnType Type="DateTime" />
        </Function>

        <!-- SYSDATETIMEOFFSET()
            returns: datetime   
    -->
        <Function Name="SYSDATETIMEOFFSET" BuiltIn="true">
            <ReturnType Type="DateTimeOffset" />
        </Function>

        <!-- GETUTCDATE()
         returns: datetime   
    -->
        <Function Name="GETUTCDATE" BuiltIn="true">
            <ReturnType Type="DateTime" />
        </Function>

        <!-- MONTH( date )
                date: smalldatetime, datetime
                returns: int   
        -->
        <Function Name="MONTH" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="date" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="MONTH" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="date" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="MONTH" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="date" Type="String" Mode="In" />
        </Function>

        <!-- YEAR( date )
            date: smalldatetime, datetime
            returns: int   
        -->
        <Function Name="YEAR" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="date" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="YEAR" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="date" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="YEAR" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="date" Type="String" Mode="In" />
        </Function>
        <!-- END DATE FUNCTIONS ######################################### -->

        <!-- BEGIN SYSTEM FUNCTIONS ##################################### -->
        <!-- DATALENGTH( arg ) 
                arg: any
                returns: int, bigint  
        -->
        <Function Name="DATALENGTH" BuiltIn="true" ParameterTypeSemantics="AllowImplicitPromotion">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Boolean" Mode="In" />
        </Function>
        <Function Name="DATALENGTH" BuiltIn="true" ParameterTypeSemantics="AllowImplicitPromotion">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Double" Mode="In" />
        </Function>
        <Function Name="DATALENGTH" BuiltIn="true" ParameterTypeSemantics="AllowImplicitPromotion">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="DATALENGTH" BuiltIn="true" ParameterTypeSemantics="AllowImplicitPromotion">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="DATALENGTH" BuiltIn="true" ParameterTypeSemantics="AllowImplicitPromotion">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Time" Mode="In" />
        </Function>
        <Function Name="DATALENGTH" BuiltIn="true" ParameterTypeSemantics="AllowImplicitPromotion">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="DATALENGTH" BuiltIn="true" ParameterTypeSemantics="AllowImplicitPromotion">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="String" Mode="In" />
        </Function>
        <Function Name="DATALENGTH" BuiltIn="true" ParameterTypeSemantics="AllowImplicitPromotion">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Binary" Mode="In" />
        </Function>
        <Function Name="DATALENGTH" BuiltIn="true" ParameterTypeSemantics="AllowImplicitPromotion">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="Guid" Mode="In" />
        </Function>

        <!-- CHECKSUM -->
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Boolean" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Double" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="String" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Time" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Binary" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Guid" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Boolean" Mode="In" />
            <Parameter Name="arg2" Type="Boolean" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Double" Mode="In" />
            <Parameter Name="arg2" Type="Double" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Decimal" Mode="In" />
            <Parameter Name="arg2" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="String" Mode="In" />
            <Parameter Name="arg2" Type="String" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="DateTime" Mode="In" />
            <Parameter Name="arg2" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Time" Mode="In" />
            <Parameter Name="arg2" Type="Time" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="DateTimeOffset" Mode="In" />
            <Parameter Name="arg2" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Binary" Mode="In" />
            <Parameter Name="arg2" Type="Binary" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Guid" Mode="In" />
            <Parameter Name="arg2" Type="Guid" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Boolean" Mode="In" />
            <Parameter Name="arg2" Type="Boolean" Mode="In" />
            <Parameter Name="arg3" Type="Boolean" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Double" Mode="In" />
            <Parameter Name="arg2" Type="Double" Mode="In" />
            <Parameter Name="arg3" Type="Double" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Decimal" Mode="In" />
            <Parameter Name="arg2" Type="Decimal" Mode="In" />
            <Parameter Name="arg3" Type="Decimal" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="String" Mode="In" />
            <Parameter Name="arg2" Type="String" Mode="In" />
            <Parameter Name="arg3" Type="String" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="DateTime" Mode="In" />
            <Parameter Name="arg2" Type="DateTime" Mode="In" />
            <Parameter Name="arg3" Type="DateTime" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="DateTimeOffset" Mode="In" />
            <Parameter Name="arg2" Type="DateTimeOffset" Mode="In" />
            <Parameter Name="arg3" Type="DateTimeOffset" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Time" Mode="In" />
            <Parameter Name="arg2" Type="Time" Mode="In" />
            <Parameter Name="arg3" Type="Time" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Binary" Mode="In" />
            <Parameter Name="arg2" Type="Binary" Mode="In" />
            <Parameter Name="arg3" Type="Binary" Mode="In" />
        </Function>
        <Function Name="CHECKSUM" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg1" Type="Guid" Mode="In" />
            <Parameter Name="arg2" Type="Guid" Mode="In" />
            <Parameter Name="arg3" Type="Guid" Mode="In" />
        </Function>

        <!-- NEWID() -->
        <Function Name="NEWID" BuiltIn="true">
            <ReturnType Type="Guid" />
        </Function>

        <!-- CURRENT_TIMESTAMP -->
        <Function Name="CURRENT_TIMESTAMP" BuiltIn="true" NiladicFunction="true">
            <ReturnType Type="DateTime" />
        </Function>

        <!-- CURRENT_USER -->
        <Function Name="CURRENT_USER" BuiltIn="true" NiladicFunction="true">
            <ReturnType Type="String" />
        </Function>

        <!-- HOST_NAME() -->
        <Function Name="HOST_NAME" BuiltIn="true">
            <ReturnType Type="String" />
        </Function>

        <!-- USER_NAME() -->
        <Function Name="USER_NAME" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="arg" Type="Int32" Mode="In" />
        </Function>
        <Function Name="USER_NAME" BuiltIn="true">
            <ReturnType Type="String" />
        </Function>

        <!-- ISNUMERIC( arg ) //implicit conversion -->
        <Function Name="ISNUMERIC" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="String" Mode="In" />
        </Function>

        <!-- ISDATE( arg ) //implicit conversion -->
        <Function Name="ISDATE" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="arg" Type="String" Mode="In" />
        </Function>

        <!-- Spatial Functions -->
        <!-- Geography ‘Static’ Functions -->
        <Function Name="POINTGEOGRAPHY" BuiltIn="true">
            <ReturnType Type="Geography" />
            <Parameter Name="latitude" Type="Double" Mode="In" />
            <Parameter Name="longitude" Type="Double" Mode="In" />
            <Parameter Name="spatialReferenceId" Type="Int32" Mode="In" />
        </Function>

        <!-- Geography ‘Instance’ Functions -->
        <Function Name="ASTEXTZM" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="geographyValue" Type="Geography" Mode="In" />
        </Function>
        <Function Name="BUFFERWITHTOLERANCE" BuiltIn="true">
            <ReturnType Type="Geography" />
            <Parameter Name="geographyValue" Type="Geography" Mode="In" />
            <Parameter Name="distance" Type="Double" Mode="In" />
            <Parameter Name="tolerance" Type="Double" Mode="In" />
            <Parameter Name="relative" Type="Boolean" Mode="In" />
        </Function>
        <Function Name="ENVELOPEANGLE" BuiltIn="true">
            <ReturnType Type="Double" />
            <Parameter Name="geographyValue" Type="Geography" Mode="In" />
        </Function>
        <Function Name="ENVELOPECENTER" BuiltIn="true">
            <ReturnType Type="Geography" />
            <Parameter Name="geographyValue" Type="Geography" Mode="In" />
        </Function>
        <Function Name="FILTER" BuiltIn="true">
            <ReturnType Type="Boolean" />
            <Parameter Name="geographyValue" Type="Geography" Mode="In" />
            <Parameter Name="geographyOther" Type="Geography" Mode="In" />
        </Function>
        <Function Name="INSTANCEOF" BuiltIn="true">
            <ReturnType Type="Boolean" />
            <Parameter Name="geographyValue" Type="Geography" Mode="In" />
            <Parameter Name="geometryTypeName" Type="String" Mode="In" />
        </Function>
        <Function Name="NUMRINGS" BuiltIn="true">
            <ReturnType Type="Int32" />
            <Parameter Name="geographyValue" Type="Geography" Mode="In" />
        </Function>
        <Function Name="REDUCE" BuiltIn="true">
            <ReturnType Type="Geography" />
            <Parameter Name="geographyValue" Type="Geography" Mode="In" />
            <Parameter Name="tolerance" Type="Double" Mode="In" />
        </Function>
        <Function Name="RINGN" BuiltIn="true">
            <ReturnType Type="Geography" />
            <Parameter Name="geographyValue" Type="Geography" Mode="In" />
            <Parameter Name="index" Type="Int32" Mode="In" />
        </Function>

        <!-- Geometry ‘Static’ Functions -->
        <Function Name="POINTGEOMETRY" BuiltIn="true">
            <ReturnType Type="Geometry" />
            <Parameter Name="xCoordinate" Type="Double" Mode="In" />
            <Parameter Name="yCoordinate" Type="Double" Mode="In" />
            <Parameter Name="spatialReferenceId" Type="Int32" Mode="In" />
        </Function>

        <!-- Geometry ‘Instance’ Functions -->
        <Function Name="ASTEXTZM" BuiltIn="true">
            <ReturnType Type="String" />
            <Parameter Name="geometryValue" Type="Geometry" Mode="In" />
        </Function>
        <Function Name="BUFFERWITHTOLERANCE" BuiltIn="true">
            <ReturnType Type="Geometry" />
            <Parameter Name="geometryValue" Type="Geometry" Mode="In" />
            <Parameter Name="distance" Type="Double" Mode="In" />
            <Parameter Name="tolerance" Type="Double" Mode="In" />
            <Parameter Name="relative" Type="Boolean" Mode="In" />
        </Function>
        <Function Name="INSTANCEOF" BuiltIn="true">
            <ReturnType Type="Boolean" />
            <Parameter Name="geometryValue" Type="Geometry" Mode="In" />
            <Parameter Name="geometryTypeName" Type="String" Mode="In" />
        </Function>
        <Function Name="FILTER" BuiltIn="true">
            <ReturnType Type="Boolean" />
            <Parameter Name="geometryValue" Type="Geometry" Mode="In" />
            <Parameter Name="geometryOther" Type="Geometry" Mode="In" />
        </Function>
        <Function Name="MAKEVALID" BuiltIn="true">
            <ReturnType Type="Geometry" />
            <Parameter Name="geometryValue" Type="Geometry" Mode="In" />
        </Function>
        <Function Name="REDUCE" BuiltIn="true">
            <ReturnType Type="Geometry" />
            <Parameter Name="geometryValue" Type="Geometry" Mode="In" />
            <Parameter Name="tolerance" Type="Double" Mode="In" />
        </Function>

        <!-- END SYSTEM FUNCTIONS ####################################### -->
    </Functions>
</ProviderManifest>